package letcode.oneQuestionPerDay._202003._20200318;

/*
矩阵重叠
 */
public class _20200318_RectangleOverlap {
    public static void main(String[] args) {
        int[] rec1 = {-521,-586,-487,992};
        int[] rec2 = {-557,114,-180,267};
        System.out.println(isRectangleOverlap(rec1, rec2));
    }

    //提供方法
    public static boolean isRectangleOverlap(int[] rec1, int[] rec2) {
        //如果第二个x1或者x2在第一个x之间，并且y1或者y2在y之间，返回true,否则返回false
        if (rec2[0] > rec1[0] && rec2[0] < rec1[2]) {
            if (rec2[1] > rec1[1] && rec2[1] < rec1[3])
                return true;
            else if (rec2[3] > rec1[1] && rec2[3] < rec1[3])
                return true;
            else if (rec2[1] < rec1[1] && rec2[3] > rec1[3])
                return true;
            else if (rec2[1] == rec1[1] && rec2[3] > rec1[1])
                return true;
            else if (rec2[3] == rec1[3] && rec2[1] < rec1[3])
                return true;
            else
                return false;
        } else if (rec2[2] > rec1[0] && rec2[2] < rec1[2]) {
            if (rec2[1] > rec1[1] && rec2[1] < rec1[3])
                return true;
            else if (rec2[3] > rec1[1] && rec2[3] < rec1[3])
                return true;
            else if (rec2[1] < rec1[1] && rec2[3] > rec1[3])
                return true;
            else if (rec2[1] == rec1[1] && rec2[3] > rec1[1])
                return true;
            else if (rec2[3] == rec1[3] && rec2[1] < rec1[3])
                return true;
            else
                return false;
        } else if (rec2[0] == rec1[0] && rec2[2] > rec2[0]){
            //边缘情况 第二个x1等于第一个的x1
            if (rec2[1] > rec1[1] && rec2[1] < rec1[3])
                return true;
            else if (rec2[3] > rec1[1] && rec2[3] < rec1[3])
                return true;
            else if (rec2[1] < rec1[1] && rec2[3] > rec1[3])
                return true;
            else if (rec2[1] == rec1[1] && rec2[3] > rec1[1])
                return true;
            else if (rec2[3] == rec1[3] && rec2[1] < rec1[3])
                return true;
            else
                return false;
        } else if (rec2[2] == rec1[2] && rec2[0] < rec2[2]){
            //边缘情况 第二个x2等于第一个的x2
            if (rec2[1] > rec1[1] && rec2[1] < rec1[3])
                return true;
            else if (rec2[3] > rec1[1] && rec2[3] < rec1[3])
                return true;
            else if (rec2[1] < rec1[1] && rec2[3] > rec1[3])
                return true;
            else if (rec2[1] == rec1[1] && rec2[3] > rec1[1])
                return true;
            else if (rec2[3] == rec1[3] && rec2[1] < rec1[3])
                return true;
            else
                return false;
        }else if (rec2[0] < rec1[0] && rec2[1] < rec1[1]){
            //边缘情况 完全包含
            if (rec2[2] > rec1[2] && rec2[3] > rec1[3])
                return true;
            else
                return false;
        }else if (rec2[0] < rec1[0] && rec2[2] > rec1[2]){
            //x1<x1  x2>x2
            if (rec2[3] < rec1[1]||rec2[1] > rec1[3])
                return false;
            else
                return true;
        }
        else
            return false;
    }
}
/*
矩形以列表 [x1, y1, x2, y2] 的形式表示，其中 (x1, y1) 为左下角的坐标，(x2, y2) 是右上角的坐标。

如果相交的面积为正，则称两矩形重叠。需要明确的是，只在角或边接触的两个矩形不构成重叠。

给出两个矩形，判断它们是否重叠并返回结果。

示例 1：

输入：rec1 = [0,0,2,2], rec2 = [1,1,3,3]
输出：true
示例 2：

输入：rec1 = [0,0,1,1], rec2 = [1,0,2,1]
输出：false
说明：

两个矩形 rec1 和 rec2 都以含有四个整数的列表的形式给出。
矩形中的所有坐标都处于 -10^9 和 10^9 之间。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/rectangle-overlap
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */